<?php
namespace app\controller;

use app\BaseController;
use think\facade\Request;
use think\facade\Db;
use think\Exception;
use think\facade\Filesystem;
use think\Config;

class AssetsImage extends BaseController
{
    //上传图片
    public function uploadimage()
    {
        // 根据用户ID获取公司ID
        $userId = $this->request->auth['data']->user->user_id;
        $companyId = Db::name('user')->where('user_id', $userId)->value('user_company_id');

        // 获取上传文件
        $request = Request::instance();
        $file = $request->file('file');
        $assetsId = $request->param('assets_id');
        $assets_code = $request->param('assets_code');

        if (empty($file)) {
            return json(['code' => 400, 'msg' => '未上传图片']);
        }

        // 获取文件原始名称及扩展名
        $originalName = $file->getOriginalName();
        $extension = pathinfo($originalName, PATHINFO_EXTENSION);

        // 检查并创建公司ID对应的文件夹
        $companyFolderPath = './uploads/' . $companyId;
        if (!is_dir($companyFolderPath)) {
            mkdir($companyFolderPath, 0755, true);
        }

        // 目标图片路径，保留原始扩展名
        $targetFilePath = $companyFolderPath . '/' . $assets_code . '.' . $extension;

        // 如果目标文件已存在则覆盖
        if (file_exists($targetFilePath)) {
            unlink($targetFilePath); // 删除原有文件
        }

        // 移动上传的文件到目标位置，使用原始扩展名
        if ($file->move($companyFolderPath, $assets_code . '.' . $extension)) {
            // 图片URL
            // 获取服务器IP
            $serverIp = $_SERVER['SERVER_ADDR'];

            // 图片URL，这里假设服务器IP可以直接用于访问
            // 注意：在很多情况下，特别是云服务器或有防火墙/代理的情况，直接使用服务器IP可能不可达
            $baseUrl ='https://www.zichan.xyz';
            $completeImageUrl = $baseUrl . '/uploads/' . $companyId . '/' . $assets_code . '.' . $extension;

            // 将图片URL插入到assets表中的assets_ImageURL字段
            try {
                // 假设AssetsModel是对应assets表的模型类
                $result = Db::table('assets')
                    ->where('assets_id', $assetsId) // 假设id是assets表的主键
                    ->update(['assets_ImageURL' => $completeImageUrl]);

                if ($result !== false) { // 更新成功

                    //根据assets_id获取获取assets表中的asssets_instock_id字段的值
                    $assets_instock_id = Db::table('assets')
                        ->where('assets_id', $assetsId)
                        ->value('assets_instock_id');
                    //再根据assets_instock_id获取获取assets表中所有符合的数据
                    $assets_instock_id_data = Db::table('vw_instock_assets')
                        ->where('assets_instock_id', $assets_instock_id)
                        ->select();


                    return json(['code' => 200, 'msg' => '图片URL保存成功', 'data' => $assets_instock_id_data]);
                } else { // 更新失败
                    return json(['code' => 500, 'msg' => '图片URL保存失败']);
                }
            } catch (\Exception $e) {
                return json(['code' => 500, 'msg' => '数据库操作异常: ' . $e->getMessage()]);
            }
        } else {
            return json(['code' => 500, 'msg' => '图片上传失败:' . $file->getError()]);
        }



    }

}